1
自然语法:运算符重载的哲学
AI037Lesson 17
00:00

自然语法 主张用户自定义类型应作为 一等公民。通过实现 运算符重载,我们允许类使用标准符号(如 +==),这降低了认知负担,并满足了 最小惊讶原则

1. 结构与分发

运算符是一种具有特殊名称的函数:关键字 operator 后跟一个符号。一个 一元运算符 有一个操作数,而一个 二元运算符 有两个操作数。当定义为一个 成员函数时,左操作数绑定到 隐式 this 指针 (a.operator+(b))。作为 非成员,两者都是显式的(operator+(a, b))。

可重载+ - * / % ^& | ~ ! = < >+= -= *= /= << >>== != <= >= && ||++ -- , ->* -> () []不可重载:: (作用域).* (成员解引用)(点运算符)?: (条件运算符)表 14.1. 运算符权限(参见第 684 页)

2. 约束与伦理

C++ 防止“语言滥用”:你不能创建新符号(例如, **)或重新定义内置类型的运算(例如, int + int)。优先级和结合性是 不可变的。架构原则:定义了 == 的类能无缝集成到像 std::find

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>